package model
{
	import cultu.core.message.BaseEntity;
	import cultu.core.message.Context;
	
	import flash.utils.Dictionary;
	
	import mx.collections.ArrayCollection;
	
	import utils.CultuConstants;
	
	import views.main.ConnectionCallout;
	
	import vo.CustomerVO;
	import vo.UserVO;
	import vo.community.CommunityVO;
	
	import wizeoo.utils.WIZDateUtils;
	
	public class Model
	{
		/**l'utilisateur connecté*/
		public var connectedUser:UserVO;
		
		/**la liste des communautés*/
		public var communitiesCollection:ArrayCollection;
		
		/**dico des communauté key = universe*/
		public var communitiesDic:Dictionary;
		
		/**l'utilisateur en cours de création*/
		public var userCreate:UserVO;
		
		/**le client en cours de création*/
		public var customerCreate:CustomerVO;
		
		/**la communauté sélectionnée depuis la CommunityBar*/
		public var selectedCommunity:CommunityVO;
		
		/**collection des roles*/
		public var roleCollection:ArrayCollection;
		/**dico de roles*/
		public var roleDic:Dictionary;
		
		/**la collection des associations en cours d'affichage*/
		public var currentAssociations:ArrayCollection;
		
		/**la catégroie sélectionnée*/
		public var selectedCategory:CommunityVO;
		
		/**les produits pour la catégorie*/
		public var productsCategoryColl:ArrayCollection;
		
		private static var instance:Model;
		
		public static function getInstance():Model
		{
			if(instance==null)
				instance = new Model();
			
			return instance;
		}
		
		public function setContext(state:String,object:BaseEntity):void
		{
			switch(state)
			{
				case CultuConstants.CMD_CREATE :
				{
					object.createTime = WIZDateUtils.TODAY;
					if(connectedUser)
						object.createBy = connectedUser.login;
					break;
				}
				case CultuConstants.CMD_UPDATE :
					object.updateTime = WIZDateUtils.TODAY;
					if(connectedUser)
						object.updateBy = connectedUser.login;
					break;
			}
		}
		
		/**purge du model sur déconnexion*/
		public function purge():void
		{
			connectedUser = null;
		}
	}
}